<template>
  <div> 
    <h1>当前求和为: {{total}}</h1>
    <h1>当前求和放大 10 倍为: {{bigTotal}}</h1>
    <h2>我在{{school}}, 学习{{subject}}</h2>
    <h2 style="color:red">Person 组件中的总人数为 : {{personList.length}}</h2>
    <select v-model.number="n">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select>
    <button @click="increment(n)">+</button>
    <button @click="decrement(n)">-</button>
    <button @click="incrementOdd(n)">当前求和为奇数再加</button>
    <button @click="incrementWait(n)">等一等再加</button>
  </div>
</template>

<script>
  import {mapState, mapGetters, mapActions, mapMutations} from 'vuex'

  export default {
    name:'Count', 
    data(){
      return { 
        n:1, // 用户选择的数据 
      }
    },
    computed: { 
      // 借助 mapState 生成计算属性，从 state 中读取数据 (数组写法)
      ...mapState(['total', 'school', 'subject', 'personList']) , 
      // 借助 mapGetters 生成计算属性，从 getters 中读取数据 (数组写法)
      ...mapGetters(['bigTotal'])
    },
    methods: { 
      // 借助 mapMutations 生成对应的方法，方法中会调用 commit 去联系 mutations (对象写法)
      ...mapMutations({increment: 'ADD', decrement: 'SUB'}), 

      // 借助 mapActions 生成对应的方法，方法中会调用 dispatch 去联系 actions (对象写法)
      ...mapActions({incrementOdd: 'addOdd', incrementWait: 'addWait'}), 
    },
    
    mounted() {
      // console.log(this)
    },
  }
</script>
<style>
  button{
    margin-left: 10px;
  }
</style>